﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using KMS.Core.domain.model.alert;
using KMS.Core.domain.model.project;
using KMS.Web.Tests.Factory;

namespace KMS.Web.Tests.domain.alert
{
	/// <summary>
	/// Summary description for EventTests
	/// </summary>
	[TestClass]
	public class SystemAlertTests
	{
        private SystemAlertFactory _systemAlertFactory;

		public SystemAlertTests()
		{
			_systemAlertFactory = new SystemAlertFactory();
		}

		private TestContext testContextInstance;

		/// <summary>
		///Gets or sets the test context which provides
		///information about and functionality for the current test run.
		///</summary>
		public TestContext TestContext
		{
			get
			{
				return testContextInstance;
			}
			set
			{
				testContextInstance = value;
			}
		}

		#region Additional test attributes
		//
		// You can use the following additional attributes as you write your tests:
		//
		// Use ClassInitialize to run code before running the first test in the class
		// [ClassInitialize()]
		// public static void MyClassInitialize(TestContext testContext) { }
		//
		// Use ClassCleanup to run code after all tests in a class have run
		// [ClassCleanup()]
		// public static void MyClassCleanup() { }
		//
		// Use TestInitialize to run code before running each test 
		// [TestInitialize()]
		// public void MyTestInitialize() { }
		//
		// Use TestCleanup to run code after each test has run
		// [TestCleanup()]
		// public void MyTestCleanup() { }
		//
		#endregion

		[TestMethod]
		public void SystemAlertCanBeConstructed()
		{
            var alertTime = DateTime.Now.AddDays(-10);
            var project = new Project("my project");
			var alert = _systemAlertFactory.Create("alert message", alertTime, project);
            Assert.AreEqual("alert message", alert.Message, "wrong alert message");
            Assert.AreEqual(alertTime, alert.DateTime, "wrong alert date/time");
            Assert.AreSame(project, alert.Project, "wrong project");
		}
	}
}
